package com.project.mapper;

import com.project.domain.dto.projectApplyDto.ExportApplyBookMybatisDto;
import com.project.domain.dto.projectReviewDto.*;
import com.project.domain.entity.BizExpertReview;
import com.project.domain.entity.BizReviewResult;
import com.project.domain.entity.BizReviewScheme;
import com.project.domain.entity.BizReviewStandard;
import com.project.domain.vo.BizReviewSchemeVo4EditPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;

/**
 * Created by cw13031 on 2025/2/6.
 * Description:
 */
@Mapper
public interface ProjectReviewMapper {


    List<BizReviewScheme> schemeList();

    BizReviewScheme getSchemeInfo(BizReviewScheme bizReviewScheme);

    ArrayList<BizReviewStandard> getSchemeStandard(BizReviewScheme bizReviewScheme);


    void insertScheme(BizReviewSchemeVo4EditPage bizReviewSchemeVo4EditPage);

    void insertSchemeStandard(BizReviewSchemeVo4EditPage bizReviewSchemeVo4EditPage);

    int updateScheme(BizReviewSchemeVo4EditPage bizReviewSchemeVo4EditPage);

//    void updateSchemeStandard(BizReviewSchemeVo4EditPage bizReviewSchemeVo4EditPage);

    void deleteSchemeStandard(@Param("ids") List<String> ids);

    void delScheme(@Param("ids")List<String> ids);

    List<HashMap<String, Object>> planList(PlanListDto dto);

    List<HashMap<String, Integer>> planListStatistics(PlanListDto dto);

    int planState(PlanStateDto dto);

    int planDel(@Param("idList")ArrayList<String> idList);

    List<HashMap<String, Object>> passedBooks(PassedBooksReqDto dto);

    List<HashMap<String, Object>> lixiangList(LixiangListReqDto dto);

    ArrayList<AssignExpertSingleLineDto> assignExperts(@Param("bookIdList")ArrayList<String> bookIdList);

    BizExpertReview getBasicFieldsByBookId(@Param("bookId")String bookId);

    void saveExperts(@Param("bizExpertReviews")ArrayList<BizExpertReview> bizExpertReviews);

    List<HashMap<String, Object>> infoExperts(InfoExpertsReqDto dto);

    List<HashMap<String, Object>> reviewPros(ReviewProsDto dto);

    int makeMessage(MakeMsgReqDto dto);

    List<HashMap<String, Object>> myReviews(MyReviewReqDto dto);

    ArrayList<ViewExpertReviewJoinTableFormatDto> reviewDetails(ViewExpertReviewDetailsReqDto dto);

    ViewExpertReviewResMainDto getExpertReviewOtherFields(ViewExpertReviewDetailsReqDto dto);

    int deleteReviewResult(@Param("expertReviewId")String expertReviewId);

    int insertReviewResult(@Param("bizReviewResultList")ArrayList<BizReviewResult> bizReviewResultList);

    int updateExpertReview(BizExpertReview dto);

    ArrayList<ExpertOptionsMybatisDto> getOpinionSummaryByBookId(@Param("bookId")String bookId);

    AdminOptionsDto getAdminReview(@Param("bookId")String bookId);

    int updateOpinionSummary(SaveAdminReviewOptionReqDto dto);

    ArrayList<ExportApplyBookMybatisDto> exportExcel(PassedBooksExcelReqDto dto);

    void deleteExpertByBookId(@Param("bookExpertList")List<SaveExpertsReqDto> dtoList);

    int refuseReview(RefuseReviewDto dto);

    int submit(ExpertSubmitDto dto);

    List<BizExpertReview> getExpertReviewIdByBookIdList(@Param("dtoList")List<SaveExpertsReqDto> dtoList);

    int deleteExpertReviewById(@Param("expertReviewIdList")List<String> expertReviewIdList);

    int deleteExpertReviewDetailById(@Param("expertReviewIdList")List<String> expertReviewIdList);
//    BizReviewPlan getPlanByBookId(@Param("bookId")String bookId);
}
